package arr

// 题目规定: nums[-1] = nums[n]=负无穷
// 所以当nums[i]>nums[i+1]时，说明至少有一个波峰在<=i的位置
// 如果nums[i] < nums[i+1],说明至少有一个波峰在>=i+1的位置
func findPeakElement(nums []int) int {
	i, j := 0, len(nums)-1
	for i < j {
		mid := (i + j) / 2
		// 如果nums中只有一个元素，则i<j不成立，直接返回
		// 如果nums中元素个数多于一个，由于mid偏左，mid+1一定不会超过数组范围，所以这里不需要考虑数组越界
		if nums[mid] > nums[mid+1] {
			j = mid
		} else {
			i = mid + 1
		}
	}
	return i
}
